From d6ec2fedf65c54151baa6b4bf26528be5fa715ca Mon Sep 17 00:00:00 2001 From: robertlipe Date: Sun, 22 Mar 2015 01:34:38 +0000 Subject: [PATCH] Adapt to Edge 510's mutation of Garmin Fit to deal with sample provided by James Morris. --- gpsbabel/garmin_fit.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gpsbabel/garmin_fit.cc b/gpsbabel/garmin_fit.cc index 82fe6b756..f5f95b598 100644 --- a/gpsbabel/garmin_fit.cc +++ b/gpsbabel/garmin_fit.cc @@ -250,18 +250,28 @@ fit_read_field(fit_field_t* f) switch (f->type) { case 1: // sint8 case 2: // uint8 - is_fatal(f->size != 1, - MYNAME ": Bad field size in data message\n"); + if (f->size == 4) { + return fit_getuint32(); + } else if (f->size == 2) { + return fit_getuint16(); + } else if (f->size == 1) { return fit_getuint8(); + } else { + fatal(MYNAME ": Bad field size %d in 1-byte data message\n", f->size); + } case 0x83: // sint16 case 0x84: // uint16 - is_fatal(f->size != 2, - MYNAME ": Bad field size in data message\n"); + if (f->size == 4) { + return fit_getuint32(); + } else if (f->size == 2) { return fit_getuint16(); + } else { + fatal(MYNAME ": Bad field size %d in 2-byte data message\n", f->size); + } case 0x85: // sint32 case 0x86: // uint32 is_fatal(f->size != 4, - MYNAME ": Bad field size in data message\n"); + MYNAME ": Bad field size %d in 4-byte data message\n", f->size); return fit_getuint32(); default: // Ignore everything else for now. for (i = 0; i < f->size; i++) { -- 2.30.2